package com.hl.card.credit.pub.dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.hl.card.credit.pub.entity.PublicOrders;
import com.hl.card.credit.pub.model.PublicOrdersAllModel;
import com.hl.card.credit.pub.model.PublicOrdersModel;

/**
 * 
 * @ClassName: PublicOrdersDao
 * @Description: TODO(公共订单)
 * @author wdf
 * @date 2018年3月27日
 *
 * @param <T>
 * @param <ID>
 */
public interface PublicOrdersDao<T, ID> extends AbstractDao<T, ID> {
	/**
	 * 
	 * @Title: getOrderDetail @Description: TODO(获取订单详情) @param @param
	 * publicOrders @param @return 参数 @return PublicOrders 返回类型 @throws
	 */
	public PublicOrders getOrderDetail(PublicOrders publicOrders);

	/**
	 * 
	 * @Title: addPublicOrders @Description: TODO(添加订单) @param @param
	 * publicOrders @param @return 参数 @return int 返回类型 @throws
	 */
	public int addPublicOrders(PublicOrders publicOrders);

	/**
	 * 
	 * @Title: addBatch @Description: TODO(批量写入数据) @param @param list 参数 @return
	 * void 返回类型 @throws
	 */
	public void addBatch(@Param("list") List<PublicOrders> list);

	public void updateBySelectiveForUpdate(PublicOrdersAllModel allModel);
	
	/**
	 * 
	    * @Title: queryOrdersList
	    * @Description: TODO(根据订单相关信息查询订单列表)
	    * @param @param publicOrders
	    * @param @return    参数
	    * @return List<PublicOrders>    返回类型
	    * @throws
	 */
	public List<PublicOrders> queryOrdersList(PublicOrdersModel publicOrdersModel);
	
	
	public List<T> queryByPageTrainOrders(PublicOrdersModel publicOrdersModel);
	
	public int queryByPageTrainOrdersCount(PublicOrdersModel publicOrdersModel);

	public PublicOrders queryDetailForUpdate(PublicOrders order);

}
